package org.spring.config.client.util;

import java.io.File;

/**
 * Copyright (c) 2017, com.ylink.,Ltd All Rights Reserved.<br/>
 * <b>包名称： </b>com.ylink.yfa4j.gateway.util<br/>
 * <b>文件名： </b>JarToolUtil.java<br/>
 * <b>类描述： </b>获取打包后jar的路径信息 <br/>
 * <b>时间： </b>2017年10月16日 下午5:51:35<br/>
 *
 * @author 于建军
 * @version v1.0
 */
public class JarToolUtil {

	/**
	 * 获取当前Jar文件
	 * 
	 */
	private static File getFile() {
		String path = JarToolUtil.class.getProtectionDomain().getCodeSource().getLocation().getFile();
		try {
			path = java.net.URLDecoder.decode(path, "UTF-8"); // 转换处理中文及空格
		}
		catch (java.io.UnsupportedEncodingException e) {
			return null;
		}
		return new File(path);
	}

	/**
	 * 获取jar目录
	 * 
	 */
	public static String getJarDir() {
		File file = getFile();
		if (file == null) {
			return null;
		}
		return getFile().getParent();
	}

	/**
	 * 获取jar包名
	 * 
	 */
	public static String getJarName() {
		File file = getFile();
		if (file == null) {
			return null;
		}
		return getFile().getName();
	}

	/**
	 * 获取jar绝对路径
	 */
	public static String getJarPath() {
		File file = getFile();
		if (file == null) {
			return null;
		}
		return file.getAbsolutePath();
	}

	/**
	 * 获取资源的绝对路径
	 */
	public static String getLibPath(String srcPath) {
		String path = "";
		try {
			path = JarToolUtil.class.getResource(srcPath).getPath();
		}
		catch (Exception e) {
		}
		File file = new File(path);
		if (!file.exists()) {
			String jarpath = JarToolUtil.class.getProtectionDomain().getCodeSource().getLocation().getPath();
			String[] jars = jarpath.split("!");
			if (jars[0].endsWith(".jar")) {
				int idx = jars[0].lastIndexOf("/");
				path = jars[0].substring(0, idx);
			}
			else {
				path = jars[0];
			}
			if (path.endsWith("/")) {
				path += srcPath.substring(1);
			}
			else {
				path += srcPath;
			}
		}
		if (path.startsWith("file:")) {
			path = path.substring(5);
		}
		String lineSeparator = System.getProperty("file.separator");
		if (!"/".equals(lineSeparator) && path.startsWith("/")) {
			path = path.substring(1);
		}
		return path;
	}
}
